/* memread_12.10.04 
sets up a pointer and then increments the position to read through memory

Thadeus Frazier-Reed  c. 2004

tcfr33@yahoo.com
http://music.calarts.edu/~tcfr33

*/
#include "ext.h"

typedef struct memread
{
	t_object f_ob;
	
	float *point;		// create a point in memory
	
	char play;
	long phase;
	long limit;
	
	void *out;
	
}t_memread;

void *memread_class;

void memread_bang(t_memread *x);
void memread_int(t_memread *x, long n);

void *memread_new(long arg1);

//-------------------------------------------------
//main

void main(void)
{
	setup((t_messlist **)&memread_class, (method)memread_new, 0L, (short)sizeof(t_memread), 0L, A_DEFLONG, 0);
	addbang((method)memread_bang);
	addint((method)memread_int);
}

//--------------------------
// new

void *memread_new(long arg1)
{
	t_memread *x;
	x = (t_memread *)newobject(memread_class);
	
	x->out = floatout(x);
	
	x->point = (float *)getbytes(1 * sizeof(float));
	
	if(arg1 == 1)
		x->point = (float *)0x000;
	
	x->phase = 0;

return(x);
}
//-------------------------
// bang

void memread_bang(t_memread *x)
{
}
//------------------------
// int
void memread_int(t_memread *x, long n)
{
	x->phase = n;
	
	outlet_float(x->out, x->point[x->phase]);
}
